home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 2 / Apprentice-Release2.iso / Tools / Languages / Harvest C 1.3 / README < prev   
Encoding:
Text File  |  1993-06-20  |  11.1 KB  |  279 lines  |  [TEXT/R*ch]

  1. Release Notes
  2. Harvest C 1.3
  3. 21 June 1993
  4. Copyright 1993 Eric W. Sink
  5.  
  6. This release of Harvest C fixes a few bugs and such from 1.2, released about
  7. a year ago.  I have done virtually no work on the project in the last year, and
  8. I have no plans of putting significant time into it in the foreseeable future.  The
  9. full source code to the compiler continues to be available under the terms of
  10. the GNU Public License.
  11.  
  12. These notes are not intended to be a user's manual.  In fact, no formal documentation
  13. is included with this release at all.
  14.  
  15. Harvest C *should* work on any Mac with System 6 or 7, minimum 4 meg
  16. RAM.  It is 32-bit clean and virtual memory compatible.  It is System
  17. 7-Friendly in that it supports AppleEvents, but it does not support
  18. Balloon Help.  Don't even try using it without 4 meg of RAM.  It will
  19. be deathly slow on a 68000 machine, if it works at all.
  20.  
  21. Areas of the great unknown:
  22.  
  23. 1.  I have no idea if this will still work on a 68000 machine, since
  24.         I don't have one to test it on.  It should.
  25.  
  26. 2.  Same goes for System 6.
  27.  
  28. 3.  Floating point is rather untested.  68881 code has not been tested
  29.         since the last day it ran on the Sun (it worked great then).  I
  30.         would be very surprised if it worked now.
  31.  
  32. 4.  68020 code generation has not been tested since it ran on the Sun.
  33.  
  34. 5.  I've never built a Harvest C project with more than about 6 files.
  35.         I'd like to know how it performs on a project with say, 25 C source
  36.         files.
  37.  
  38. 6.  Support for big globals (> 32k) exists, but has never been tested.  
  39.         Ever.
  40.  
  41. Comments:
  42.  
  43. Give Harvest C lots of memory.  The minimum MF partition is
  44. 2000k.
  45.  
  46. Harvest C is still not very efficient with memory, and I'm certain
  47. there are still leaks.
  48.  
  49. NOTE
  50. The C source files must be in the same folder as their project file.
  51. NOTE
  52.  
  53. The MPW 3.2 headers must be in a folder called "(Harvest C Headers)",
  54. in the same folder as the Harvest C application.  The MPW 3.2 libs
  55. must be in a folder called "(Harvest C Libraries)", also in the same
  56. folder as the Harvest C application.  To test this, open Harvest C,
  57. and create a new project.  The project will have two libraries in it
  58. (Interface.o and Runtime.o) if and only if your libraries are in the
  59. right place.  When naming those folders, include the parens, but not
  60. the quotes.
  61.  
  62. Harvest C will interact with Alpha and ResEdit using AppleEvents, if
  63. you launch them.  From the project window, double click on a C source
  64. file, and it will open in Alpha.  Double click on a resource file, and
  65. it will open in ResEdit.
  66.  
  67. Currently, all option settings apply to every file in the project.  Version
  68. 1.2 no longer allows separate option settings for each file.  For now, take
  69. note that a change in option settings does NOT mark every file as needing
  70. recompilation.
  71.  
  72. Several sample programs are included with this release.
  73.  
  74. Harvest C currently does not support compiling anything except
  75. applications (ie no CODE resources, XCMDs, DAs, etc)
  76.  
  77. Harvest C 1.3 no longer has a Tool Command Language shell.
  78.  
  79. There are some menu items which are ALWAYS grey, because Harvest C
  80. doesn't really have that feature yet.
  81.  
  82. ----------Interfaces & Libraries
  83.  
  84. In order for your program to be linked to form an application, you
  85. must link with some standard libraries.  These libraries allow access
  86. to Toolbox routines, handle initialization of global variables, and
  87. things like that.  Furthermore, use of these libraries will generally
  88. require that you use the interface (or header) files which accompany
  89. them.
  90.  
  91. You must obtain Apple's headers and libraries in order to use Harvest
  92. C.  I do not have legal permission to distribute them.  They are
  93. sold from the Apple Programmers and Developers Association, and are
  94. called "MPW Toolbox Interfaces and Libraries v. 7.0", product number
  95. M0615LL/B, at a cost of $40.  You may reach APDA at :
  96.         APDA
  97.         Apple Computer, Inc.
  98.         20525 Mariani Avenue
  99.         Mail Stop 33G
  100.         Cupertino, CA 95014-6299
  101.  
  102. You may also obtain the necessary headers and libraries by anonymous
  103. ftp from ftp.apple.com.  I do not know which directory they are currently
  104. in, so dig around a little.
  105.  
  106. Harvest C will NOT work with the MPW 3.1 headers and libraries.
  107.  
  108. CURRENT PROBLEMS (not really edited since 1.2)
  109.  
  110. As no software is bug free, and compilers are particularly prone to
  111. problems, I will not be so foolish as to claim that Harvest C is
  112. perfect.  The following items are already known :
  113.  
  114. -----General deficiencies
  115.         The compiler is slow.
  116.  
  117.         Harvest C does not support the MPW comp data type
  118.  
  119.         The Harvest C Linker is not as smart as the MPW linker.  It
  120. produces somewhat bloated applications.
  121.  
  122.         Harvest C is a memory hog.  
  123.  
  124.         Harvest C sometimes produces code which is truly inane.
  125.  
  126. -----Bugs
  127.         The reliability of floating point math is not fully known.
  128.  
  129.         There are memory leaks.
  130.  
  131. --- NOTICE ---
  132.  
  133.     Harvest C is free software; you can redistribute it and/or modify
  134.     it under the terms of the GNU Generic Public License as published by
  135.     the Free Software Foundation; either version 2, or (at your option)
  136.     any later version.
  137.     
  138.     Harvest C is distributed in the hope that it will be useful,
  139.     but WITHOUT ANY WARRANTY; without even the implied warranty of
  140.     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  141.     GNU General Public License for more details.
  142.     
  143.     You should have received a copy of the GNU General Public License
  144.     along with Harvest C; see the file COPYING.  If not, write to
  145.     the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
  146.     
  147.     Harvest C is not in any way a product of the Free Software Foundation.
  148.     Harvest C is not GNU software.
  149.     Harvest C is not public domain.
  150.     Harvest C is not shareware.
  151.  
  152.     Various parts of Harvest C were not necessarily written by me (Eric Sink).
  153.     These parts are not necessarily covered by the GNU General Public License,
  154.     as I do not hold the copyright on those parts of the code.
  155.     
  156.     The user interface for Harvest C was written using the THINK Class
  157.     Library.  As the THINK C manual recommends creating applications by
  158.     copying and modifying their example applications, I have done just that.
  159.     Their copyright remains intact in each file where this is the case.
  160.     
  161.  
  162. --- End of NOTICE ---
  163.  
  164. Please note that Harvest C will NOT compile itself.  If you intend to
  165. compile Harvest C using the source code obtained from me, you must use
  166. THINK C 5.0.  The Harvest C source code makes use of the object oriented
  167. extensions to THINK C which are not included in Harvest C itself.  The
  168. program MIGHT compile under THINK C 6.0, but I've never tried it.
  169.  
  170. The intent of making the source code available is to make Harvest C a
  171. bit more detached from me.  For Harvest C to survive beyond my limited
  172. constraints, it needs to be in the hands of more than one developer.  Many
  173. have offered to help with the compiler, and I want to give you the
  174. chance to do so.
  175.  
  176. Harvest C uses the malloc package written by Tim Endres.  The user interface
  177. was done with the THINK Class Library.  The assembler module was
  178. adapted from a public domain 68k assembler, though extensive
  179. modifications have been made.
  180.  
  181. Notes on the Harvest C source code
  182.  
  183. You must have THINK C 5.0x to compile Harvest C.
  184.  
  185. The project file contains all the Harvest C source files, plus lots
  186. of TCL files (which you already have), plus several customized libraries.
  187. These libraries are named things like "ANSI 4 byte".  Create these by
  188. copying the appropriate THINK C library, modifying the option settings
  189. to be exactly like those in the Harvest C project, and recompile.
  190.  
  191. I didn't write all of the code included here.  The assembler
  192. routines were obtained from the Motorola BBS.  The malloc library was
  193. written by Tim Endres.
  194.  
  195. You may note that much of the code is hard to read, or not very well written.
  196. You're right.  I wrote Harvest C as a learning experience.  I constantly
  197. learned from my own mistakes.  Some of those mistakes have already been
  198. corrected through rewrites.  Some have not.  Almost invariably, I am
  199. very aware of the deficiencies in this program and its design.  The limiting
  200. factor which keeps me from fixing things is time, not [entirely] knowledge.
  201. The bottom line here is: I am making myself vulnerable by releasing code
  202. which I know is in many ways far from perfect.  I will answer questions.  I
  203. would prefer not to receive gripes or complaints.
  204.  
  205. If you know a lot about compilers, it would probably not be a good idea
  206. to read the code in the parser, lexer, etc...  I know better now.
  207.  
  208. If you are just learning about compilers, read a compiler text.  Your best
  209. learning experience w.r.t. Harvest C will be the ability to identify my
  210. mistakes.  I knew very little when I wrote some of this -- I would do much of it
  211. differently now.
  212.  
  213. Harvest C is badly hurting in terms of source file organization.  Too many
  214. things get included in every file, and the layout of functions among files
  215. does not always make much sense.
  216.  
  217. Harvest C was originally written on a Sun 3, using malloc() for dynamic memory
  218. allocation.  I later ported to the Mac, and used NewHandle().  Anticipating
  219. this change, most struct references look like this
  220.  
  221.     Via(s)->member;
  222.  
  223. instead of
  224.  
  225.     s->member;
  226.  
  227. where Via() is a preprocessor macro which determines whether or not we are
  228. using malloc().  Current memory allocation uses malloc(), so Via expands
  229. to have no effect.
  230.  
  231. You may be thinking about continuing to improve Harvest C and make it
  232. the greatest free C compiler around.  I'd advise that you channel that
  233. enthusiasm into the efforts at porting GCC 2 to the Mac, based partially
  234. on Harvest C's code.  Remember this:
  235.  
  236. I know Harvest C better than anyone (I wrote it).  I estimate that the
  237. effort necessary for ME to make Harvest C a robust, awesome compiler would be
  238. FAR greater than the effort necessary to port GCC 2 and integrate the Harvest C
  239. linker and some other things.  If you really want to see a great free C
  240. compiler for the Macintosh, direct your efforts toward GCC.  Stan Shebs is
  241. involved in work along these lines, as well as others.
  242.  
  243. In any case, the source code is here, for your pleasure.
  244.  
  245. Acknowledgements
  246.  
  247. I never know who to thank.  Requiring me to judge the relative merits
  248. of others' contributions to this project seems a bit much.  The
  249. following people come to mind right now.  If your name belongs here,
  250. let me know, and I'm sorry I omitted you.
  251.  
  252. Pete Keleher, for feedback and helping integrate Harvest C with Alpha.
  253. Jon W{tte, for extensive feedback (more messages in my Harvest C mail folder
  254.         than anyone except Pete!)
  255. Michael Dautermann, for being very patient, and because he deserves
  256.         all the credit he can get.
  257. Terry Thiel, for writing the ACM (:-) article
  258. Jersey Scientific, for contributing dev tools
  259. Paul Madden, for writing the DI article
  260. Tim Endres, for the malloc source
  261.  
  262. My address appears below.  The volume of mail I get regarding Harvest C far
  263. exceeds the time committment I want to make, so I don't always answer right away.
  264. A few pieces of mail have gone totally answered, sorry.  If you contact me, please
  265. remember that I'm not actively working on this project at all.
  266.  
  267. Eric W. Sink
  268. 1014 Pomona Drive
  269. Champaign, IL  61821
  270. e-sink@uiuc.edu
  271.  
  272. Sometime around the fall of 1993, my addresses should probably change to:
  273.  
  274. Eric W. Sink
  275. 3101 Amy Drive
  276. Champaign, IL  61821
  277. esink@spyglass.com
  278.  
  279.